<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>WeakSet</title>
</head>

<body>
  <script>
    /* 
      WeakSet相对Set而言
      1.WeakSet的值必须是对象，像数字、字符串或Symbol等其他类型都是不允许的。
      2.当没有变量或属性引用该对象时，将会被GC自动回收掉。
      3.不可枚举WeakSet中的对象，即WeakSet不包含forEach()、keys()、values()和entries()方法。
      4.无法获取WeakSet中的成员数量，即没有size属性。
    */

    var weak = new WeakSet()
    var arr = [1]
        weak.add(arr)
        console.log(weak)

        weak.has(arr)
        console.log(weak)

        weak.delete(arr)
        console.log(weak)

        weak.has(arr)
        console.log(weak)

    // 目前的用例是：
    // 存储DOM节点，当该节点从文档中被移除后，不必再担心引发内存泄漏

  </script>
</body>

</html>